package com.zhu.transaction.mapper;

import com.zhu.transaction.pojo.Product;
import com.zhu.transaction.pojo.ProductCondition;
import com.zhu.transaction.pojo.reports.ProductReports;
import com.zhu.transaction.pojo.state.BackState;
import org.apache.ibatis.annotations.Param;
import org.omg.CORBA.INTERNAL;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author zhu
 * @since 2021-01-07
 */
public interface ProductMapper {

    //添加一条商品记录
    int addProduct(Product product);

    //删除商品
    int deleteProductById(String productId);

    //更新商品上架状态
    int updateProductShelves(String productId);

    //更新商品状态
    int updateProductState(@Param("productId") String productId, @Param("newState") Integer newState);

    //更新商品逻辑删除状态
    int updateDeleteState(String productId);

    //更新商品信息
    int updateProduct(Product product);

    //查询某一分类下的所有商品
    List<Product> queryAllProduct(@Param("id") String categoryId);

    //按照筛选条件，查询一页的商品数据
    List<Product> queryProductByPage(@Param("productCondition") ProductCondition productCondition, @Param("index") Integer index, @Param("num") Integer num);

    //通过商品ID查询商品
    Product queryProductByID(String id);

    //通过商品的发布人ID查询商品
    List<Product> queryProductByUserID(@Param("userId") String userId, @Param("index") Integer index);

    //查询商品总数
    int queryProductNum(@Param("userId") String userId,@Param("productCondition") ProductCondition productCondition);

    //通过收藏的ID获取商品信息
    Product queryProductByFavoriteId(String favoriteId);

    //查询商品新增报表
    List<ProductReports> queryNewProductReports();

    //查询商品分类比例份额报表
    List<ProductReports> queryCategoryProductReports();

}
